package com.zp.self.module.level_1_问道.I_Java基础;

import org.junit.Assert;
import org.junit.Test;

/**
 * @author ：by Zeng Peng
 * @date ：Created 2022/6/6 8:04
 * @description ：
 */
public class I_1_常量池_缓存池 {

    /**
     @description ：1.Integer 的valueOf 会使用缓存池【类加载 static 块中初始化】.
                        默认范围[-128,127]
                     2.编译器会在缓冲池范围内的基本类型自动装箱过程调用 valueOf() 方法
                     3.基本类型对应的缓冲池如下:
                         boolean： values true and false
                         byte ：all byte values
                         short ：values between -128 and 127
                         int ：values between -128 and 127
                         char： in the range \u0000 to \u007F
     */
    @Test
    public void getInteger(){
        //new Integer(123) 每次都会新建一个对象
        //Integer.valueOf(123) 会使用缓存池中的对象，多次调用会取得同一个对象的引用。
        Integer a = Integer.valueOf(123);
        Integer b = Integer.valueOf(123);
        Assert.assertTrue(a==b);

        //Boolean 缓存池
        Boolean c=false;
        Boolean d=false;
        Assert.assertTrue(c==d); //true
         c=new Boolean(false);
         d=new Boolean(false);
        Assert.assertTrue(c==d); //false
    }
}
